﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Entidades;
using System.Reflection;
using System.ComponentModel;

namespace EvaluacionWebRole
{
    public partial class Inicio : System.Web.UI.Page
    {
        string claveExamen;
        string codigoExamen;

        protected void Page_Load(object sender, EventArgs e)
        {

            if (!IsPostBack)
            {
                claveExamen = GetCookieString("ClaveExamen");

                //var preguntas = new LogicaDeNegocios.Preguntas();               
                ServicioPreguntas.PreguntasClient preguntas = new ServicioPreguntas.PreguntasClient();                 

                if (preguntas.VerificarPreguntasSuficientes(claveExamen))
                {
                    

                    //var ec = new LogicaDeNegocios.ExamenesCodigos();                   
                    var ec = new ServicioExamenesCodigos.ExamenesCodigosClient();
                    
                    var eci = ec.ObtenerInformacionExamenCodigo(GetCookieString("CodigoExamen"));

                    string infoCodigoExamen = String.Format("IntentosRealizados:{0}<br/>NumeroMaxIntentos:{1}<br />"
                         + "PorcentajeAprobacion:{2}<br />CantidadPreguntasRespondidas:{3}<br />CantidadPreguntasNoRespondidas:{4}<br />"
                         + "CantidadPreguntasPorResponder:{5}<br />ExamenTipoEstado:{6}",
                        eci.IntentosRealizados,
                        eci.NumeroMaxIntentos,                        
                        eci.PorcentajeAprobacion,
                        eci.CantidadPreguntasRespondidas,
                        eci.CantidadPreguntasNoRespondidas,
                        eci.CantidadPreguntasPorResponder,
                        eci.ExamenTipoEstado);

                    lblInfoCodigoExamen.Text = infoCodigoExamen;

                }
                else
                {
                    Response.Redirect("Resultado.aspx?Mensaje=No se puede realizar el examen, comuníquese con el Administrador");
                }
            }

        }

        #region Metodos Cookies
        private string GetCookieString(string keyName)
        {
            if (Request.Cookies[keyName] != null)
            {
                return Request.Cookies[keyName].Value;
            }

            return "Unknown";
        }

        private int GetCookieInt(string keyName)
        {
            if (Request.Cookies[keyName] != null)
            {
                return int.Parse(Request.Cookies[keyName].Value);
            }

            return 0;
        }

        private void SetCookie(string keyName, string value)
        {
            Response.Cookies[keyName].Value = value;
        }
        #endregion

        protected void btnSalir_Click(object sender, EventArgs e)
        {
            Response.Redirect("Default.aspx");
        }

        protected void btnInicoExamen_Click(object sender, EventArgs e)
        {
            codigoExamen = GetCookieString("CodigoExamen");

            //var ec = new LogicaDeNegocios.ExamenesCodigos();
            var ec = new ServicioExamenesCodigos.ExamenesCodigosClient();
            var eci = ec.ObtenerInformacionExamenCodigo(codigoExamen);

            if (eci.ExamenTipoEstado != TipoEstadoExamen.Aprobado.ToString())
            {
                ServicioHistoriales.HistorialesClient h = new ServicioHistoriales.HistorialesClient();
                //var h = new LogicaDeNegocios.Historiales();

                //if (!h.Agregar(codigoExamen)) //METODO EN LA LOGICA DE NEGOCIOS
                if (!h.AgregarIntento(codigoExamen))
                {
                    Response.Redirect("Resultado.aspx?Mensaje=Error del sistema");
                }

                if (ec.Reiniciar(codigoExamen))
                {
                    Response.Redirect("Pregunta.aspx");
                }
                else
                {
                    Response.Redirect("Resultado.aspx?Mensaje=Error del sistema");
                }
            }


        }
        public static string GetEnumDescription(Enum value)
        {
            FieldInfo fi = value.GetType().GetField(value.ToString());

            DescriptionAttribute[] attributes =
                (DescriptionAttribute[])fi.GetCustomAttributes(
                typeof(DescriptionAttribute),
                false);

            if (attributes != null &&
                attributes.Length > 0)
                return attributes[0].Description;
            else
                return value.ToString();
        }
    }
}